perm filename DEMON.GC[AID,LSP] blob sn#490817 filedate 1980-01-01 generic text, type C, neo UTF8
COMMENT āŠ—   VALID 00003 PAGES
C REC  PAGE   DESCRIPTION
C00001 00001
C00002 00002	(DECLARE (FASLAPSETUP/| T))
C00003 00003	(cond ((status feature newio)
C00005 ENDMK
CāŠ—;
(DECLARE (FASLAPSETUP/| T))

; This routine computes an estimate of the size of the Maclisp lowseg
; in pages.

(LAP CORESIZE SUBR)
(ARGS CORESIZE (NIL . 0))
;(MOVE TT (- D10NAM 133))	;move tt,hixm
(MOVE TT 44)			;jobhrl
(IDIVI TT 512.)
(ADDI TT 1)
(JSP T FXCONS)
(POPJ P)
NIL




(cond ((status feature newio)
       (setq gc-overflow 'gc-overflow-daemon))
      (t
       (SSTATUS INTERRUPT 13. 'GC-OVERFLOW-DAEMON) ))

(DECLARE (SPECIAL %%GC-VERBOSE%% %%GC-TRACE%%) (*EXPR CORESIZE))
 
(DECLARE (FLONUM %%GC-SEGSIZE%%))

(DECLARE (SPECIAL %%GC-SEGSIZE%% %%GC-CORESIZE%%))

(SETQ %%GC-VERBOSE%% NIL %%GC-SEGSIZE%% 1024.0 %%GC-CORESIZE%% 
      (COND ((OR (STATUS FEATURES ONESEGMENT)
		 (STATUS FEATURES TOPS-20))
	     512.0)
	    (T 256.0))))

(SETQ %%GC-TRACE%% NIL)

(DEFUN GC-OVERFLOW-DAEMON (X) 
 (and %%gc-trace%%
  (progn
   (TERPRI)(PRINC '|In the overflow demon, dealing with |)
   (princ x)(terpri)))
  ((LAMBDA(Q)
       (APPLY 'ALLOC
	      (LIST (LIST X (LIST NIL Q NIL)))) 

       (AND %%GC-VERBOSE%%
     	    ((LAMBDA(↑R)
       		(TERPRI)
       		(PRINC '|...increasing |)
       		(PRINC X)
       		(PRINC '| GCMAX TO |) (PRINC Q)(PRINC '| WORDS...|)
       		(TERPRI)) NIL)))
   (+ (FIX (*$ (//$ (-$ %%GC-CORESIZE%% (FLOAT (CORESIZE))) %%GC-CORESIZE%%)  
	       (FLOAT %%GC-SEGSIZE%%)))
      (CADR (GET (CONS NIL (ALLOC T))
	      X)))))